// Template Source: BaseEntity.java.tt
// ------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation.  All Rights Reserved.  Licensed under the MIT License.  See License in the project root for license information.
// ------------------------------------------------------------------------------

package com.microsoft.graph.models;
import com.microsoft.graph.serializer.ISerializer;
import com.microsoft.graph.serializer.IJsonBackedObject;
import com.microsoft.graph.serializer.AdditionalDataManager;
import java.util.EnumSet;
import com.microsoft.graph.http.BaseCollectionPage;
import com.microsoft.graph.models.StateManagementSetting;
import com.microsoft.graph.models.DefenderCloudBlockLevelType;
import com.microsoft.graph.models.DefenderDetectedMalwareActions;
import com.microsoft.graph.models.DefenderMonitorFileActivity;
import com.microsoft.graph.models.DefenderPromptForSampleSubmission;
import com.microsoft.graph.models.DefenderScanType;
import com.microsoft.graph.models.WeeklySchedule;
import com.microsoft.graph.models.DiagnosticDataSubmissionMode;
import com.microsoft.graph.models.EdgeCookiePolicy;
import com.microsoft.graph.models.EdgeSearchEngineBase;
import com.microsoft.graph.models.Windows10NetworkProxyServer;
import com.microsoft.graph.models.RequiredPasswordType;
import com.microsoft.graph.models.SafeSearchFilterType;
import com.microsoft.graph.models.WindowsStartMenuAppListVisibilityType;
import com.microsoft.graph.models.WindowsStartMenuModeType;
import com.microsoft.graph.models.VisibilitySetting;
import com.microsoft.graph.models.WindowsSpotlightEnablementSettings;
import com.microsoft.graph.models.DeviceConfiguration;


import com.google.gson.JsonObject;
import com.google.gson.annotations.SerializedName;
import com.google.gson.annotations.Expose;
import javax.annotation.Nullable;
import javax.annotation.Nonnull;

// **NOTE** This file was generated by a tool and any changes will be overwritten.

/**
 * The class for the Windows10General Configuration.
 */
public class Windows10GeneralConfiguration extends DeviceConfiguration implements IJsonBackedObject {


    /**
     * The Accounts Block Adding Non Microsoft Account Email.
     * Indicates whether or not to Block the user from adding email accounts to the device that are not associated with a Microsoft account.
     */
    @SerializedName(value = "accountsBlockAddingNonMicrosoftAccountEmail", alternate = {"AccountsBlockAddingNonMicrosoftAccountEmail"})
    @Expose
	@Nullable
    public Boolean accountsBlockAddingNonMicrosoftAccountEmail;

    /**
     * The Anti Theft Mode Blocked.
     * Indicates whether or not to block the user from selecting an AntiTheft mode preference (Windows 10 Mobile only).
     */
    @SerializedName(value = "antiTheftModeBlocked", alternate = {"AntiTheftModeBlocked"})
    @Expose
	@Nullable
    public Boolean antiTheftModeBlocked;

    /**
     * The Apps Allow Trusted Apps Sideloading.
     * Indicates whether apps from AppX packages signed with a trusted certificate can be side loaded. Possible values are: notConfigured, blocked, allowed.
     */
    @SerializedName(value = "appsAllowTrustedAppsSideloading", alternate = {"AppsAllowTrustedAppsSideloading"})
    @Expose
	@Nullable
    public StateManagementSetting appsAllowTrustedAppsSideloading;

    /**
     * The Apps Block Windows Store Originated Apps.
     * Indicates whether or not to disable the launch of all apps from Windows Store that came pre-installed or were downloaded.
     */
    @SerializedName(value = "appsBlockWindowsStoreOriginatedApps", alternate = {"AppsBlockWindowsStoreOriginatedApps"})
    @Expose
	@Nullable
    public Boolean appsBlockWindowsStoreOriginatedApps;

    /**
     * The Bluetooth Allowed Services.
     * Specify a list of allowed Bluetooth services and profiles in hex formatted strings.
     */
    @SerializedName(value = "bluetoothAllowedServices", alternate = {"BluetoothAllowedServices"})
    @Expose
	@Nullable
    public java.util.List<String> bluetoothAllowedServices;

    /**
     * The Bluetooth Block Advertising.
     * Whether or not to Block the user from using bluetooth advertising.
     */
    @SerializedName(value = "bluetoothBlockAdvertising", alternate = {"BluetoothBlockAdvertising"})
    @Expose
	@Nullable
    public Boolean bluetoothBlockAdvertising;

    /**
     * The Bluetooth Block Discoverable Mode.
     * Whether or not to Block the user from using bluetooth discoverable mode.
     */
    @SerializedName(value = "bluetoothBlockDiscoverableMode", alternate = {"BluetoothBlockDiscoverableMode"})
    @Expose
	@Nullable
    public Boolean bluetoothBlockDiscoverableMode;

    /**
     * The Bluetooth Blocked.
     * Whether or not to Block the user from using bluetooth.
     */
    @SerializedName(value = "bluetoothBlocked", alternate = {"BluetoothBlocked"})
    @Expose
	@Nullable
    public Boolean bluetoothBlocked;

    /**
     * The Bluetooth Block Pre Pairing.
     * Whether or not to block specific bundled Bluetooth peripherals to automatically pair with the host device.
     */
    @SerializedName(value = "bluetoothBlockPrePairing", alternate = {"BluetoothBlockPrePairing"})
    @Expose
	@Nullable
    public Boolean bluetoothBlockPrePairing;

    /**
     * The Camera Blocked.
     * Whether or not to Block the user from accessing the camera of the device.
     */
    @SerializedName(value = "cameraBlocked", alternate = {"CameraBlocked"})
    @Expose
	@Nullable
    public Boolean cameraBlocked;

    /**
     * The Cellular Block Data When Roaming.
     * Whether or not to Block the user from using data over cellular while roaming.
     */
    @SerializedName(value = "cellularBlockDataWhenRoaming", alternate = {"CellularBlockDataWhenRoaming"})
    @Expose
	@Nullable
    public Boolean cellularBlockDataWhenRoaming;

    /**
     * The Cellular Block Vpn.
     * Whether or not to Block the user from using VPN over cellular.
     */
    @SerializedName(value = "cellularBlockVpn", alternate = {"CellularBlockVpn"})
    @Expose
	@Nullable
    public Boolean cellularBlockVpn;

    /**
     * The Cellular Block Vpn When Roaming.
     * Whether or not to Block the user from using VPN when roaming over cellular.
     */
    @SerializedName(value = "cellularBlockVpnWhenRoaming", alternate = {"CellularBlockVpnWhenRoaming"})
    @Expose
	@Nullable
    public Boolean cellularBlockVpnWhenRoaming;

    /**
     * The Certificates Block Manual Root Certificate Installation.
     * Whether or not to Block the user from doing manual root certificate installation.
     */
    @SerializedName(value = "certificatesBlockManualRootCertificateInstallation", alternate = {"CertificatesBlockManualRootCertificateInstallation"})
    @Expose
	@Nullable
    public Boolean certificatesBlockManualRootCertificateInstallation;

    /**
     * The Connected Devices Service Blocked.
     * Whether or not to block Connected Devices Service which enables discovery and connection to other devices, remote messaging, remote app sessions and other cross-device experiences.
     */
    @SerializedName(value = "connectedDevicesServiceBlocked", alternate = {"ConnectedDevicesServiceBlocked"})
    @Expose
	@Nullable
    public Boolean connectedDevicesServiceBlocked;

    /**
     * The Copy Paste Blocked.
     * Whether or not to Block the user from using copy paste.
     */
    @SerializedName(value = "copyPasteBlocked", alternate = {"CopyPasteBlocked"})
    @Expose
	@Nullable
    public Boolean copyPasteBlocked;

    /**
     * The Cortana Blocked.
     * Whether or not to Block the user from using Cortana.
     */
    @SerializedName(value = "cortanaBlocked", alternate = {"CortanaBlocked"})
    @Expose
	@Nullable
    public Boolean cortanaBlocked;

    /**
     * The Defender Block End User Access.
     * Whether or not to block end user access to Defender.
     */
    @SerializedName(value = "defenderBlockEndUserAccess", alternate = {"DefenderBlockEndUserAccess"})
    @Expose
	@Nullable
    public Boolean defenderBlockEndUserAccess;

    /**
     * The Defender Cloud Block Level.
     * Specifies the level of cloud-delivered protection. Possible values are: notConfigured, high, highPlus, zeroTolerance.
     */
    @SerializedName(value = "defenderCloudBlockLevel", alternate = {"DefenderCloudBlockLevel"})
    @Expose
	@Nullable
    public DefenderCloudBlockLevelType defenderCloudBlockLevel;

    /**
     * The Defender Days Before Deleting Quarantined Malware.
     * Number of days before deleting quarantined malware. Valid values 0 to 90
     */
    @SerializedName(value = "defenderDaysBeforeDeletingQuarantinedMalware", alternate = {"DefenderDaysBeforeDeletingQuarantinedMalware"})
    @Expose
	@Nullable
    public Integer defenderDaysBeforeDeletingQuarantinedMalware;

    /**
     * The Defender Detected Malware Actions.
     * Gets or sets Defender’s actions to take on detected Malware per threat level.
     */
    @SerializedName(value = "defenderDetectedMalwareActions", alternate = {"DefenderDetectedMalwareActions"})
    @Expose
	@Nullable
    public DefenderDetectedMalwareActions defenderDetectedMalwareActions;

    /**
     * The Defender File Extensions To Exclude.
     * File extensions to exclude from scans and real time protection.
     */
    @SerializedName(value = "defenderFileExtensionsToExclude", alternate = {"DefenderFileExtensionsToExclude"})
    @Expose
	@Nullable
    public java.util.List<String> defenderFileExtensionsToExclude;

    /**
     * The Defender Files And Folders To Exclude.
     * Files and folder to exclude from scans and real time protection.
     */
    @SerializedName(value = "defenderFilesAndFoldersToExclude", alternate = {"DefenderFilesAndFoldersToExclude"})
    @Expose
	@Nullable
    public java.util.List<String> defenderFilesAndFoldersToExclude;

    /**
     * The Defender Monitor File Activity.
     * Value for monitoring file activity. Possible values are: userDefined, disable, monitorAllFiles, monitorIncomingFilesOnly, monitorOutgoingFilesOnly.
     */
    @SerializedName(value = "defenderMonitorFileActivity", alternate = {"DefenderMonitorFileActivity"})
    @Expose
	@Nullable
    public DefenderMonitorFileActivity defenderMonitorFileActivity;

    /**
     * The Defender Processes To Exclude.
     * Processes to exclude from scans and real time protection.
     */
    @SerializedName(value = "defenderProcessesToExclude", alternate = {"DefenderProcessesToExclude"})
    @Expose
	@Nullable
    public java.util.List<String> defenderProcessesToExclude;

    /**
     * The Defender Prompt For Sample Submission.
     * The configuration for how to prompt user for sample submission. Possible values are: userDefined, alwaysPrompt, promptBeforeSendingPersonalData, neverSendData, sendAllDataWithoutPrompting.
     */
    @SerializedName(value = "defenderPromptForSampleSubmission", alternate = {"DefenderPromptForSampleSubmission"})
    @Expose
	@Nullable
    public DefenderPromptForSampleSubmission defenderPromptForSampleSubmission;

    /**
     * The Defender Require Behavior Monitoring.
     * Indicates whether or not to require behavior monitoring.
     */
    @SerializedName(value = "defenderRequireBehaviorMonitoring", alternate = {"DefenderRequireBehaviorMonitoring"})
    @Expose
	@Nullable
    public Boolean defenderRequireBehaviorMonitoring;

    /**
     * The Defender Require Cloud Protection.
     * Indicates whether or not to require cloud protection.
     */
    @SerializedName(value = "defenderRequireCloudProtection", alternate = {"DefenderRequireCloudProtection"})
    @Expose
	@Nullable
    public Boolean defenderRequireCloudProtection;

    /**
     * The Defender Require Network Inspection System.
     * Indicates whether or not to require network inspection system.
     */
    @SerializedName(value = "defenderRequireNetworkInspectionSystem", alternate = {"DefenderRequireNetworkInspectionSystem"})
    @Expose
	@Nullable
    public Boolean defenderRequireNetworkInspectionSystem;

    /**
     * The Defender Require Real Time Monitoring.
     * Indicates whether or not to require real time monitoring.
     */
    @SerializedName(value = "defenderRequireRealTimeMonitoring", alternate = {"DefenderRequireRealTimeMonitoring"})
    @Expose
	@Nullable
    public Boolean defenderRequireRealTimeMonitoring;

    /**
     * The Defender Scan Archive Files.
     * Indicates whether or not to scan archive files.
     */
    @SerializedName(value = "defenderScanArchiveFiles", alternate = {"DefenderScanArchiveFiles"})
    @Expose
	@Nullable
    public Boolean defenderScanArchiveFiles;

    /**
     * The Defender Scan Downloads.
     * Indicates whether or not to scan downloads.
     */
    @SerializedName(value = "defenderScanDownloads", alternate = {"DefenderScanDownloads"})
    @Expose
	@Nullable
    public Boolean defenderScanDownloads;

    /**
     * The Defender Scan Incoming Mail.
     * Indicates whether or not to scan incoming mail messages.
     */
    @SerializedName(value = "defenderScanIncomingMail", alternate = {"DefenderScanIncomingMail"})
    @Expose
	@Nullable
    public Boolean defenderScanIncomingMail;

    /**
     * The Defender Scan Mapped Network Drives During Full Scan.
     * Indicates whether or not to scan mapped network drives during full scan.
     */
    @SerializedName(value = "defenderScanMappedNetworkDrivesDuringFullScan", alternate = {"DefenderScanMappedNetworkDrivesDuringFullScan"})
    @Expose
	@Nullable
    public Boolean defenderScanMappedNetworkDrivesDuringFullScan;

    /**
     * The Defender Scan Max Cpu.
     * Max CPU usage percentage during scan. Valid values 0 to 100
     */
    @SerializedName(value = "defenderScanMaxCpu", alternate = {"DefenderScanMaxCpu"})
    @Expose
	@Nullable
    public Integer defenderScanMaxCpu;

    /**
     * The Defender Scan Network Files.
     * Indicates whether or not to scan files opened from a network folder.
     */
    @SerializedName(value = "defenderScanNetworkFiles", alternate = {"DefenderScanNetworkFiles"})
    @Expose
	@Nullable
    public Boolean defenderScanNetworkFiles;

    /**
     * The Defender Scan Removable Drives During Full Scan.
     * Indicates whether or not to scan removable drives during full scan.
     */
    @SerializedName(value = "defenderScanRemovableDrivesDuringFullScan", alternate = {"DefenderScanRemovableDrivesDuringFullScan"})
    @Expose
	@Nullable
    public Boolean defenderScanRemovableDrivesDuringFullScan;

    /**
     * The Defender Scan Scripts Loaded In Internet Explorer.
     * Indicates whether or not to scan scripts loaded in Internet Explorer browser.
     */
    @SerializedName(value = "defenderScanScriptsLoadedInInternetExplorer", alternate = {"DefenderScanScriptsLoadedInInternetExplorer"})
    @Expose
	@Nullable
    public Boolean defenderScanScriptsLoadedInInternetExplorer;

    /**
     * The Defender Scan Type.
     * The defender system scan type. Possible values are: userDefined, disabled, quick, full.
     */
    @SerializedName(value = "defenderScanType", alternate = {"DefenderScanType"})
    @Expose
	@Nullable
    public DefenderScanType defenderScanType;

    /**
     * The Defender Scheduled Quick Scan Time.
     * The time to perform a daily quick scan.
     */
    @SerializedName(value = "defenderScheduledQuickScanTime", alternate = {"DefenderScheduledQuickScanTime"})
    @Expose
	@Nullable
    public com.microsoft.graph.core.TimeOfDay defenderScheduledQuickScanTime;

    /**
     * The Defender Scheduled Scan Time.
     * The defender time for the system scan.
     */
    @SerializedName(value = "defenderScheduledScanTime", alternate = {"DefenderScheduledScanTime"})
    @Expose
	@Nullable
    public com.microsoft.graph.core.TimeOfDay defenderScheduledScanTime;

    /**
     * The Defender Signature Update Interval In Hours.
     * The signature update interval in hours. Specify 0 not to check. Valid values 0 to 24
     */
    @SerializedName(value = "defenderSignatureUpdateIntervalInHours", alternate = {"DefenderSignatureUpdateIntervalInHours"})
    @Expose
	@Nullable
    public Integer defenderSignatureUpdateIntervalInHours;

    /**
     * The Defender System Scan Schedule.
     * Defender day of the week for the system scan. Possible values are: userDefined, everyday, sunday, monday, tuesday, wednesday, thursday, friday, saturday, noScheduledScan.
     */
    @SerializedName(value = "defenderSystemScanSchedule", alternate = {"DefenderSystemScanSchedule"})
    @Expose
	@Nullable
    public WeeklySchedule defenderSystemScanSchedule;

    /**
     * The Developer Unlock Setting.
     * Indicates whether or not to allow developer unlock. Possible values are: notConfigured, blocked, allowed.
     */
    @SerializedName(value = "developerUnlockSetting", alternate = {"DeveloperUnlockSetting"})
    @Expose
	@Nullable
    public StateManagementSetting developerUnlockSetting;

    /**
     * The Device Management Block Factory Reset On Mobile.
     * Indicates whether or not to Block the user from resetting their phone.
     */
    @SerializedName(value = "deviceManagementBlockFactoryResetOnMobile", alternate = {"DeviceManagementBlockFactoryResetOnMobile"})
    @Expose
	@Nullable
    public Boolean deviceManagementBlockFactoryResetOnMobile;

    /**
     * The Device Management Block Manual Unenroll.
     * Indicates whether or not to Block the user from doing manual un-enrollment from device management.
     */
    @SerializedName(value = "deviceManagementBlockManualUnenroll", alternate = {"DeviceManagementBlockManualUnenroll"})
    @Expose
	@Nullable
    public Boolean deviceManagementBlockManualUnenroll;

    /**
     * The Diagnostics Data Submission Mode.
     * Gets or sets a value allowing the device to send diagnostic and usage telemetry data, such as Watson. Possible values are: userDefined, none, basic, enhanced, full.
     */
    @SerializedName(value = "diagnosticsDataSubmissionMode", alternate = {"DiagnosticsDataSubmissionMode"})
    @Expose
	@Nullable
    public DiagnosticDataSubmissionMode diagnosticsDataSubmissionMode;

    /**
     * The Edge Allow Start Pages Modification.
     * Allow users to change Start pages on Edge. Use the EdgeHomepageUrls to specify the Start pages that the user would see by default when they open Edge.
     */
    @SerializedName(value = "edgeAllowStartPagesModification", alternate = {"EdgeAllowStartPagesModification"})
    @Expose
	@Nullable
    public Boolean edgeAllowStartPagesModification;

    /**
     * The Edge Block Access To About Flags.
     * Indicates whether or not to prevent access to about flags on Edge browser.
     */
    @SerializedName(value = "edgeBlockAccessToAboutFlags", alternate = {"EdgeBlockAccessToAboutFlags"})
    @Expose
	@Nullable
    public Boolean edgeBlockAccessToAboutFlags;

    /**
     * The Edge Block Address Bar Dropdown.
     * Block the address bar dropdown functionality in Microsoft Edge. Disable this settings to minimize network connections from Microsoft Edge to Microsoft services.
     */
    @SerializedName(value = "edgeBlockAddressBarDropdown", alternate = {"EdgeBlockAddressBarDropdown"})
    @Expose
	@Nullable
    public Boolean edgeBlockAddressBarDropdown;

    /**
     * The Edge Block Autofill.
     * Indicates whether or not to block auto fill.
     */
    @SerializedName(value = "edgeBlockAutofill", alternate = {"EdgeBlockAutofill"})
    @Expose
	@Nullable
    public Boolean edgeBlockAutofill;

    /**
     * The Edge Block Compatibility List.
     * Block Microsoft compatibility list in Microsoft Edge. This list from Microsoft helps Edge properly display sites with known compatibility issues.
     */
    @SerializedName(value = "edgeBlockCompatibilityList", alternate = {"EdgeBlockCompatibilityList"})
    @Expose
	@Nullable
    public Boolean edgeBlockCompatibilityList;

    /**
     * The Edge Block Developer Tools.
     * Indicates whether or not to block developer tools in the Edge browser.
     */
    @SerializedName(value = "edgeBlockDeveloperTools", alternate = {"EdgeBlockDeveloperTools"})
    @Expose
	@Nullable
    public Boolean edgeBlockDeveloperTools;

    /**
     * The Edge Blocked.
     * Indicates whether or not to Block the user from using the Edge browser.
     */
    @SerializedName(value = "edgeBlocked", alternate = {"EdgeBlocked"})
    @Expose
	@Nullable
    public Boolean edgeBlocked;

    /**
     * The Edge Block Extensions.
     * Indicates whether or not to block extensions in the Edge browser.
     */
    @SerializedName(value = "edgeBlockExtensions", alternate = {"EdgeBlockExtensions"})
    @Expose
	@Nullable
    public Boolean edgeBlockExtensions;

    /**
     * The Edge Block In Private Browsing.
     * Indicates whether or not to block InPrivate browsing on corporate networks, in the Edge browser.
     */
    @SerializedName(value = "edgeBlockInPrivateBrowsing", alternate = {"EdgeBlockInPrivateBrowsing"})
    @Expose
	@Nullable
    public Boolean edgeBlockInPrivateBrowsing;

    /**
     * The Edge Block Java Script.
     * Indicates whether or not to Block the user from using JavaScript.
     */
    @SerializedName(value = "edgeBlockJavaScript", alternate = {"EdgeBlockJavaScript"})
    @Expose
	@Nullable
    public Boolean edgeBlockJavaScript;

    /**
     * The Edge Block Live Tile Data Collection.
     * Block the collection of information by Microsoft for live tile creation when users pin a site to Start from Microsoft Edge.
     */
    @SerializedName(value = "edgeBlockLiveTileDataCollection", alternate = {"EdgeBlockLiveTileDataCollection"})
    @Expose
	@Nullable
    public Boolean edgeBlockLiveTileDataCollection;

    /**
     * The Edge Block Password Manager.
     * Indicates whether or not to Block password manager.
     */
    @SerializedName(value = "edgeBlockPasswordManager", alternate = {"EdgeBlockPasswordManager"})
    @Expose
	@Nullable
    public Boolean edgeBlockPasswordManager;

    /**
     * The Edge Block Popups.
     * Indicates whether or not to block popups.
     */
    @SerializedName(value = "edgeBlockPopups", alternate = {"EdgeBlockPopups"})
    @Expose
	@Nullable
    public Boolean edgeBlockPopups;

    /**
     * The Edge Block Search Suggestions.
     * Indicates whether or not to block the user from using the search suggestions in the address bar.
     */
    @SerializedName(value = "edgeBlockSearchSuggestions", alternate = {"EdgeBlockSearchSuggestions"})
    @Expose
	@Nullable
    public Boolean edgeBlockSearchSuggestions;

    /**
     * The Edge Block Sending Do Not Track Header.
     * Indicates whether or not to Block the user from sending the do not track header.
     */
    @SerializedName(value = "edgeBlockSendingDoNotTrackHeader", alternate = {"EdgeBlockSendingDoNotTrackHeader"})
    @Expose
	@Nullable
    public Boolean edgeBlockSendingDoNotTrackHeader;

    /**
     * The Edge Block Sending Intranet Traffic To Internet Explorer.
     * Indicates whether or not to switch the intranet traffic from Edge to Internet Explorer. Note: the name of this property is misleading; the property is obsolete, use EdgeSendIntranetTrafficToInternetExplorer instead.
     */
    @SerializedName(value = "edgeBlockSendingIntranetTrafficToInternetExplorer", alternate = {"EdgeBlockSendingIntranetTrafficToInternetExplorer"})
    @Expose
	@Nullable
    public Boolean edgeBlockSendingIntranetTrafficToInternetExplorer;

    /**
     * The Edge Clear Browsing Data On Exit.
     * Clear browsing data on exiting Microsoft Edge.
     */
    @SerializedName(value = "edgeClearBrowsingDataOnExit", alternate = {"EdgeClearBrowsingDataOnExit"})
    @Expose
	@Nullable
    public Boolean edgeClearBrowsingDataOnExit;

    /**
     * The Edge Cookie Policy.
     * Indicates which cookies to block in the Edge browser. Possible values are: userDefined, allow, blockThirdParty, blockAll.
     */
    @SerializedName(value = "edgeCookiePolicy", alternate = {"EdgeCookiePolicy"})
    @Expose
	@Nullable
    public EdgeCookiePolicy edgeCookiePolicy;

    /**
     * The Edge Disable First Run Page.
     * Block the Microsoft web page that opens on the first use of Microsoft Edge. This policy allows enterprises, like those enrolled in zero emissions configurations, to block this page.
     */
    @SerializedName(value = "edgeDisableFirstRunPage", alternate = {"EdgeDisableFirstRunPage"})
    @Expose
	@Nullable
    public Boolean edgeDisableFirstRunPage;

    /**
     * The Edge Enterprise Mode Site List Location.
     * Indicates the enterprise mode site list location. Could be a local file, local network or http location.
     */
    @SerializedName(value = "edgeEnterpriseModeSiteListLocation", alternate = {"EdgeEnterpriseModeSiteListLocation"})
    @Expose
	@Nullable
    public String edgeEnterpriseModeSiteListLocation;

    /**
     * The Edge First Run Url.
     * The first run URL for when Edge browser is opened for the first time.
     */
    @SerializedName(value = "edgeFirstRunUrl", alternate = {"EdgeFirstRunUrl"})
    @Expose
	@Nullable
    public String edgeFirstRunUrl;

    /**
     * The Edge Homepage Urls.
     * The list of URLs for homepages shodwn on MDM-enrolled devices on Edge browser.
     */
    @SerializedName(value = "edgeHomepageUrls", alternate = {"EdgeHomepageUrls"})
    @Expose
	@Nullable
    public java.util.List<String> edgeHomepageUrls;

    /**
     * The Edge Require Smart Screen.
     * Indicates whether or not to Require the user to use the smart screen filter.
     */
    @SerializedName(value = "edgeRequireSmartScreen", alternate = {"EdgeRequireSmartScreen"})
    @Expose
	@Nullable
    public Boolean edgeRequireSmartScreen;

    /**
     * The Edge Search Engine.
     * Allows IT admins to set a default search engine for MDM-Controlled devices. Users can override this and change their default search engine provided the AllowSearchEngineCustomization policy is not set.
     */
    @SerializedName(value = "edgeSearchEngine", alternate = {"EdgeSearchEngine"})
    @Expose
	@Nullable
    public EdgeSearchEngineBase edgeSearchEngine;

    /**
     * The Edge Send Intranet Traffic To Internet Explorer.
     * Indicates whether or not to switch the intranet traffic from Edge to Internet Explorer.
     */
    @SerializedName(value = "edgeSendIntranetTrafficToInternetExplorer", alternate = {"EdgeSendIntranetTrafficToInternetExplorer"})
    @Expose
	@Nullable
    public Boolean edgeSendIntranetTrafficToInternetExplorer;

    /**
     * The Edge Sync Favorites With Internet Explorer.
     * Enable favorites sync between Internet Explorer and Microsoft Edge. Additions, deletions, modifications and order changes to favorites are shared between browsers.
     */
    @SerializedName(value = "edgeSyncFavoritesWithInternetExplorer", alternate = {"EdgeSyncFavoritesWithInternetExplorer"})
    @Expose
	@Nullable
    public Boolean edgeSyncFavoritesWithInternetExplorer;

    /**
     * The Enterprise Cloud Print Discovery End Point.
     * Endpoint for discovering cloud printers.
     */
    @SerializedName(value = "enterpriseCloudPrintDiscoveryEndPoint", alternate = {"EnterpriseCloudPrintDiscoveryEndPoint"})
    @Expose
	@Nullable
    public String enterpriseCloudPrintDiscoveryEndPoint;

    /**
     * The Enterprise Cloud Print Discovery Max Limit.
     * Maximum number of printers that should be queried from a discovery endpoint. This is a mobile only setting. Valid values 1 to 65535
     */
    @SerializedName(value = "enterpriseCloudPrintDiscoveryMaxLimit", alternate = {"EnterpriseCloudPrintDiscoveryMaxLimit"})
    @Expose
	@Nullable
    public Integer enterpriseCloudPrintDiscoveryMaxLimit;

    /**
     * The Enterprise Cloud Print Mopria Discovery Resource Identifier.
     * OAuth resource URI for printer discovery service as configured in Azure portal.
     */
    @SerializedName(value = "enterpriseCloudPrintMopriaDiscoveryResourceIdentifier", alternate = {"EnterpriseCloudPrintMopriaDiscoveryResourceIdentifier"})
    @Expose
	@Nullable
    public String enterpriseCloudPrintMopriaDiscoveryResourceIdentifier;

    /**
     * The Enterprise Cloud Print OAuth Authority.
     * Authentication endpoint for acquiring OAuth tokens.
     */
    @SerializedName(value = "enterpriseCloudPrintOAuthAuthority", alternate = {"EnterpriseCloudPrintOAuthAuthority"})
    @Expose
	@Nullable
    public String enterpriseCloudPrintOAuthAuthority;

    /**
     * The Enterprise Cloud Print OAuth Client Identifier.
     * GUID of a client application authorized to retrieve OAuth tokens from the OAuth Authority.
     */
    @SerializedName(value = "enterpriseCloudPrintOAuthClientIdentifier", alternate = {"EnterpriseCloudPrintOAuthClientIdentifier"})
    @Expose
	@Nullable
    public String enterpriseCloudPrintOAuthClientIdentifier;

    /**
     * The Enterprise Cloud Print Resource Identifier.
     * OAuth resource URI for print service as configured in the Azure portal.
     */
    @SerializedName(value = "enterpriseCloudPrintResourceIdentifier", alternate = {"EnterpriseCloudPrintResourceIdentifier"})
    @Expose
	@Nullable
    public String enterpriseCloudPrintResourceIdentifier;

    /**
     * The Experience Block Device Discovery.
     * Indicates whether or not to enable device discovery UX.
     */
    @SerializedName(value = "experienceBlockDeviceDiscovery", alternate = {"ExperienceBlockDeviceDiscovery"})
    @Expose
	@Nullable
    public Boolean experienceBlockDeviceDiscovery;

    /**
     * The Experience Block Error Dialog When No SIM.
     * Indicates whether or not to allow the error dialog from displaying if no SIM card is detected.
     */
    @SerializedName(value = "experienceBlockErrorDialogWhenNoSIM", alternate = {"ExperienceBlockErrorDialogWhenNoSIM"})
    @Expose
	@Nullable
    public Boolean experienceBlockErrorDialogWhenNoSIM;

    /**
     * The Experience Block Task Switcher.
     * Indicates whether or not to enable task switching on the device.
     */
    @SerializedName(value = "experienceBlockTaskSwitcher", alternate = {"ExperienceBlockTaskSwitcher"})
    @Expose
	@Nullable
    public Boolean experienceBlockTaskSwitcher;

    /**
     * The Game Dvr Blocked.
     * Indicates whether or not to block DVR and broadcasting.
     */
    @SerializedName(value = "gameDvrBlocked", alternate = {"GameDvrBlocked"})
    @Expose
	@Nullable
    public Boolean gameDvrBlocked;

    /**
     * The Internet Sharing Blocked.
     * Indicates whether or not to Block the user from using internet sharing.
     */
    @SerializedName(value = "internetSharingBlocked", alternate = {"InternetSharingBlocked"})
    @Expose
	@Nullable
    public Boolean internetSharingBlocked;

    /**
     * The Location Services Blocked.
     * Indicates whether or not to Block the user from location services.
     */
    @SerializedName(value = "locationServicesBlocked", alternate = {"LocationServicesBlocked"})
    @Expose
	@Nullable
    public Boolean locationServicesBlocked;

    /**
     * The Lock Screen Allow Timeout Configuration.
     * Specify whether to show a user-configurable setting to control the screen timeout while on the lock screen of Windows 10 Mobile devices. If this policy is set to Allow, the value set by lockScreenTimeoutInSeconds is ignored.
     */
    @SerializedName(value = "lockScreenAllowTimeoutConfiguration", alternate = {"LockScreenAllowTimeoutConfiguration"})
    @Expose
	@Nullable
    public Boolean lockScreenAllowTimeoutConfiguration;

    /**
     * The Lock Screen Block Action Center Notifications.
     * Indicates whether or not to block action center notifications over lock screen.
     */
    @SerializedName(value = "lockScreenBlockActionCenterNotifications", alternate = {"LockScreenBlockActionCenterNotifications"})
    @Expose
	@Nullable
    public Boolean lockScreenBlockActionCenterNotifications;

    /**
     * The Lock Screen Block Cortana.
     * Indicates whether or not the user can interact with Cortana using speech while the system is locked.
     */
    @SerializedName(value = "lockScreenBlockCortana", alternate = {"LockScreenBlockCortana"})
    @Expose
	@Nullable
    public Boolean lockScreenBlockCortana;

    /**
     * The Lock Screen Block Toast Notifications.
     * Indicates whether to allow toast notifications above the device lock screen.
     */
    @SerializedName(value = "lockScreenBlockToastNotifications", alternate = {"LockScreenBlockToastNotifications"})
    @Expose
	@Nullable
    public Boolean lockScreenBlockToastNotifications;

    /**
     * The Lock Screen Timeout In Seconds.
     * Set the duration (in seconds) from the screen locking to the screen turning off for Windows 10 Mobile devices. Supported values are 11-1800. Valid values 11 to 1800
     */
    @SerializedName(value = "lockScreenTimeoutInSeconds", alternate = {"LockScreenTimeoutInSeconds"})
    @Expose
	@Nullable
    public Integer lockScreenTimeoutInSeconds;

    /**
     * The Logon Block Fast User Switching.
     * Disables the ability to quickly switch between users that are logged on simultaneously without logging off.
     */
    @SerializedName(value = "logonBlockFastUserSwitching", alternate = {"LogonBlockFastUserSwitching"})
    @Expose
	@Nullable
    public Boolean logonBlockFastUserSwitching;

    /**
     * The Microsoft Account Blocked.
     * Indicates whether or not to Block a Microsoft account.
     */
    @SerializedName(value = "microsoftAccountBlocked", alternate = {"MicrosoftAccountBlocked"})
    @Expose
	@Nullable
    public Boolean microsoftAccountBlocked;

    /**
     * The Microsoft Account Block Settings Sync.
     * Indicates whether or not to Block Microsoft account settings sync.
     */
    @SerializedName(value = "microsoftAccountBlockSettingsSync", alternate = {"MicrosoftAccountBlockSettingsSync"})
    @Expose
	@Nullable
    public Boolean microsoftAccountBlockSettingsSync;

    /**
     * The Network Proxy Apply Settings Device Wide.
     * If set, proxy settings will be applied to all processes and accounts in the device. Otherwise, it will be applied to the user account that’s enrolled into MDM.
     */
    @SerializedName(value = "networkProxyApplySettingsDeviceWide", alternate = {"NetworkProxyApplySettingsDeviceWide"})
    @Expose
	@Nullable
    public Boolean networkProxyApplySettingsDeviceWide;

    /**
     * The Network Proxy Automatic Configuration Url.
     * Address to the proxy auto-config (PAC) script you want to use.
     */
    @SerializedName(value = "networkProxyAutomaticConfigurationUrl", alternate = {"NetworkProxyAutomaticConfigurationUrl"})
    @Expose
	@Nullable
    public String networkProxyAutomaticConfigurationUrl;

    /**
     * The Network Proxy Disable Auto Detect.
     * Disable automatic detection of settings. If enabled, the system will try to find the path to a proxy auto-config (PAC) script.
     */
    @SerializedName(value = "networkProxyDisableAutoDetect", alternate = {"NetworkProxyDisableAutoDetect"})
    @Expose
	@Nullable
    public Boolean networkProxyDisableAutoDetect;

    /**
     * The Network Proxy Server.
     * Specifies manual proxy server settings.
     */
    @SerializedName(value = "networkProxyServer", alternate = {"NetworkProxyServer"})
    @Expose
	@Nullable
    public Windows10NetworkProxyServer networkProxyServer;

    /**
     * The Nfc Blocked.
     * Indicates whether or not to Block the user from using near field communication.
     */
    @SerializedName(value = "nfcBlocked", alternate = {"NfcBlocked"})
    @Expose
	@Nullable
    public Boolean nfcBlocked;

    /**
     * The One Drive Disable File Sync.
     * Gets or sets a value allowing IT admins to prevent apps and features from working with files on OneDrive.
     */
    @SerializedName(value = "oneDriveDisableFileSync", alternate = {"OneDriveDisableFileSync"})
    @Expose
	@Nullable
    public Boolean oneDriveDisableFileSync;

    /**
     * The Password Block Simple.
     * Specify whether PINs or passwords such as '1111' or '1234' are allowed. For Windows 10 desktops, it also controls the use of picture passwords.
     */
    @SerializedName(value = "passwordBlockSimple", alternate = {"PasswordBlockSimple"})
    @Expose
	@Nullable
    public Boolean passwordBlockSimple;

    /**
     * The Password Expiration Days.
     * The password expiration in days. Valid values 0 to 730
     */
    @SerializedName(value = "passwordExpirationDays", alternate = {"PasswordExpirationDays"})
    @Expose
	@Nullable
    public Integer passwordExpirationDays;

    /**
     * The Password Minimum Character Set Count.
     * The number of character sets required in the password.
     */
    @SerializedName(value = "passwordMinimumCharacterSetCount", alternate = {"PasswordMinimumCharacterSetCount"})
    @Expose
	@Nullable
    public Integer passwordMinimumCharacterSetCount;

    /**
     * The Password Minimum Length.
     * The minimum password length. Valid values 4 to 16
     */
    @SerializedName(value = "passwordMinimumLength", alternate = {"PasswordMinimumLength"})
    @Expose
	@Nullable
    public Integer passwordMinimumLength;

    /**
     * The Password Minutes Of Inactivity Before Screen Timeout.
     * The minutes of inactivity before the screen times out.
     */
    @SerializedName(value = "passwordMinutesOfInactivityBeforeScreenTimeout", alternate = {"PasswordMinutesOfInactivityBeforeScreenTimeout"})
    @Expose
	@Nullable
    public Integer passwordMinutesOfInactivityBeforeScreenTimeout;

    /**
     * The Password Previous Password Block Count.
     * The number of previous passwords to prevent reuse of. Valid values 0 to 50
     */
    @SerializedName(value = "passwordPreviousPasswordBlockCount", alternate = {"PasswordPreviousPasswordBlockCount"})
    @Expose
	@Nullable
    public Integer passwordPreviousPasswordBlockCount;

    /**
     * The Password Required.
     * Indicates whether or not to require the user to have a password.
     */
    @SerializedName(value = "passwordRequired", alternate = {"PasswordRequired"})
    @Expose
	@Nullable
    public Boolean passwordRequired;

    /**
     * The Password Required Type.
     * The required password type. Possible values are: deviceDefault, alphanumeric, numeric.
     */
    @SerializedName(value = "passwordRequiredType", alternate = {"PasswordRequiredType"})
    @Expose
	@Nullable
    public RequiredPasswordType passwordRequiredType;

    /**
     * The Password Require When Resume From Idle State.
     * Indicates whether or not to require a password upon resuming from an idle state.
     */
    @SerializedName(value = "passwordRequireWhenResumeFromIdleState", alternate = {"PasswordRequireWhenResumeFromIdleState"})
    @Expose
	@Nullable
    public Boolean passwordRequireWhenResumeFromIdleState;

    /**
     * The Password Sign In Failure Count Before Factory Reset.
     * The number of sign in failures before factory reset. Valid values 0 to 999
     */
    @SerializedName(value = "passwordSignInFailureCountBeforeFactoryReset", alternate = {"PasswordSignInFailureCountBeforeFactoryReset"})
    @Expose
	@Nullable
    public Integer passwordSignInFailureCountBeforeFactoryReset;

    /**
     * The Personalization Desktop Image Url.
     * A http or https Url to a jpg, jpeg or png image that needs to be downloaded and used as the Desktop Image or a file Url to a local image on the file system that needs to used as the Desktop Image.
     */
    @SerializedName(value = "personalizationDesktopImageUrl", alternate = {"PersonalizationDesktopImageUrl"})
    @Expose
	@Nullable
    public String personalizationDesktopImageUrl;

    /**
     * The Personalization Lock Screen Image Url.
     * A http or https Url to a jpg, jpeg or png image that neeeds to be downloaded and used as the Lock Screen Image or a file Url to a local image on the file system that needs to be used as the Lock Screen Image.
     */
    @SerializedName(value = "personalizationLockScreenImageUrl", alternate = {"PersonalizationLockScreenImageUrl"})
    @Expose
	@Nullable
    public String personalizationLockScreenImageUrl;

    /**
     * The Privacy Advertising Id.
     * Enables or disables the use of advertising ID. Added in Windows 10, version 1607. Possible values are: notConfigured, blocked, allowed.
     */
    @SerializedName(value = "privacyAdvertisingId", alternate = {"PrivacyAdvertisingId"})
    @Expose
	@Nullable
    public StateManagementSetting privacyAdvertisingId;

    /**
     * The Privacy Auto Accept Pairing And Consent Prompts.
     * Indicates whether or not to allow the automatic acceptance of the pairing and privacy user consent dialog when launching apps.
     */
    @SerializedName(value = "privacyAutoAcceptPairingAndConsentPrompts", alternate = {"PrivacyAutoAcceptPairingAndConsentPrompts"})
    @Expose
	@Nullable
    public Boolean privacyAutoAcceptPairingAndConsentPrompts;

    /**
     * The Privacy Block Input Personalization.
     * Indicates whether or not to block the usage of cloud based speech services for Cortana, Dictation, or Store applications.
     */
    @SerializedName(value = "privacyBlockInputPersonalization", alternate = {"PrivacyBlockInputPersonalization"})
    @Expose
	@Nullable
    public Boolean privacyBlockInputPersonalization;

    /**
     * The Reset Protection Mode Blocked.
     * Indicates whether or not to Block the user from reset protection mode.
     */
    @SerializedName(value = "resetProtectionModeBlocked", alternate = {"ResetProtectionModeBlocked"})
    @Expose
	@Nullable
    public Boolean resetProtectionModeBlocked;

    /**
     * The Safe Search Filter.
     * Specifies what filter level of safe search is required. Possible values are: userDefined, strict, moderate.
     */
    @SerializedName(value = "safeSearchFilter", alternate = {"SafeSearchFilter"})
    @Expose
	@Nullable
    public SafeSearchFilterType safeSearchFilter;

    /**
     * The Screen Capture Blocked.
     * Indicates whether or not to Block the user from taking Screenshots.
     */
    @SerializedName(value = "screenCaptureBlocked", alternate = {"ScreenCaptureBlocked"})
    @Expose
	@Nullable
    public Boolean screenCaptureBlocked;

    /**
     * The Search Block Diacritics.
     * Specifies if search can use diacritics.
     */
    @SerializedName(value = "searchBlockDiacritics", alternate = {"SearchBlockDiacritics"})
    @Expose
	@Nullable
    public Boolean searchBlockDiacritics;

    /**
     * The Search Disable Auto Language Detection.
     * Specifies whether to use automatic language detection when indexing content and properties.
     */
    @SerializedName(value = "searchDisableAutoLanguageDetection", alternate = {"SearchDisableAutoLanguageDetection"})
    @Expose
	@Nullable
    public Boolean searchDisableAutoLanguageDetection;

    /**
     * The Search Disable Indexer Backoff.
     * Indicates whether or not to disable the search indexer backoff feature.
     */
    @SerializedName(value = "searchDisableIndexerBackoff", alternate = {"SearchDisableIndexerBackoff"})
    @Expose
	@Nullable
    public Boolean searchDisableIndexerBackoff;

    /**
     * The Search Disable Indexing Encrypted Items.
     * Indicates whether or not to block indexing of WIP-protected items to prevent them from appearing in search results for Cortana or Explorer.
     */
    @SerializedName(value = "searchDisableIndexingEncryptedItems", alternate = {"SearchDisableIndexingEncryptedItems"})
    @Expose
	@Nullable
    public Boolean searchDisableIndexingEncryptedItems;

    /**
     * The Search Disable Indexing Removable Drive.
     * Indicates whether or not to allow users to add locations on removable drives to libraries and to be indexed.
     */
    @SerializedName(value = "searchDisableIndexingRemovableDrive", alternate = {"SearchDisableIndexingRemovableDrive"})
    @Expose
	@Nullable
    public Boolean searchDisableIndexingRemovableDrive;

    /**
     * The Search Enable Automatic Index Size Manangement.
     * Specifies minimum amount of hard drive space on the same drive as the index location before indexing stops.
     */
    @SerializedName(value = "searchEnableAutomaticIndexSizeManangement", alternate = {"SearchEnableAutomaticIndexSizeManangement"})
    @Expose
	@Nullable
    public Boolean searchEnableAutomaticIndexSizeManangement;

    /**
     * The Search Enable Remote Queries.
     * Indicates whether or not to block remote queries of this computer’s index.
     */
    @SerializedName(value = "searchEnableRemoteQueries", alternate = {"SearchEnableRemoteQueries"})
    @Expose
	@Nullable
    public Boolean searchEnableRemoteQueries;

    /**
     * The Settings Block Accounts Page.
     * Indicates whether or not to block access to Accounts in Settings app.
     */
    @SerializedName(value = "settingsBlockAccountsPage", alternate = {"SettingsBlockAccountsPage"})
    @Expose
	@Nullable
    public Boolean settingsBlockAccountsPage;

    /**
     * The Settings Block Add Provisioning Package.
     * Indicates whether or not to block the user from installing provisioning packages.
     */
    @SerializedName(value = "settingsBlockAddProvisioningPackage", alternate = {"SettingsBlockAddProvisioningPackage"})
    @Expose
	@Nullable
    public Boolean settingsBlockAddProvisioningPackage;

    /**
     * The Settings Block Apps Page.
     * Indicates whether or not to block access to Apps in Settings app.
     */
    @SerializedName(value = "settingsBlockAppsPage", alternate = {"SettingsBlockAppsPage"})
    @Expose
	@Nullable
    public Boolean settingsBlockAppsPage;

    /**
     * The Settings Block Change Language.
     * Indicates whether or not to block the user from changing the language settings.
     */
    @SerializedName(value = "settingsBlockChangeLanguage", alternate = {"SettingsBlockChangeLanguage"})
    @Expose
	@Nullable
    public Boolean settingsBlockChangeLanguage;

    /**
     * The Settings Block Change Power Sleep.
     * Indicates whether or not to block the user from changing power and sleep settings.
     */
    @SerializedName(value = "settingsBlockChangePowerSleep", alternate = {"SettingsBlockChangePowerSleep"})
    @Expose
	@Nullable
    public Boolean settingsBlockChangePowerSleep;

    /**
     * The Settings Block Change Region.
     * Indicates whether or not to block the user from changing the region settings.
     */
    @SerializedName(value = "settingsBlockChangeRegion", alternate = {"SettingsBlockChangeRegion"})
    @Expose
	@Nullable
    public Boolean settingsBlockChangeRegion;

    /**
     * The Settings Block Change System Time.
     * Indicates whether or not to block the user from changing date and time settings.
     */
    @SerializedName(value = "settingsBlockChangeSystemTime", alternate = {"SettingsBlockChangeSystemTime"})
    @Expose
	@Nullable
    public Boolean settingsBlockChangeSystemTime;

    /**
     * The Settings Block Devices Page.
     * Indicates whether or not to block access to Devices in Settings app.
     */
    @SerializedName(value = "settingsBlockDevicesPage", alternate = {"SettingsBlockDevicesPage"})
    @Expose
	@Nullable
    public Boolean settingsBlockDevicesPage;

    /**
     * The Settings Block Ease Of Access Page.
     * Indicates whether or not to block access to Ease of Access in Settings app.
     */
    @SerializedName(value = "settingsBlockEaseOfAccessPage", alternate = {"SettingsBlockEaseOfAccessPage"})
    @Expose
	@Nullable
    public Boolean settingsBlockEaseOfAccessPage;

    /**
     * The Settings Block Edit Device Name.
     * Indicates whether or not to block the user from editing the device name.
     */
    @SerializedName(value = "settingsBlockEditDeviceName", alternate = {"SettingsBlockEditDeviceName"})
    @Expose
	@Nullable
    public Boolean settingsBlockEditDeviceName;

    /**
     * The Settings Block Gaming Page.
     * Indicates whether or not to block access to Gaming in Settings app.
     */
    @SerializedName(value = "settingsBlockGamingPage", alternate = {"SettingsBlockGamingPage"})
    @Expose
	@Nullable
    public Boolean settingsBlockGamingPage;

    /**
     * The Settings Block Network Internet Page.
     * Indicates whether or not to block access to Network &amp; Internet in Settings app.
     */
    @SerializedName(value = "settingsBlockNetworkInternetPage", alternate = {"SettingsBlockNetworkInternetPage"})
    @Expose
	@Nullable
    public Boolean settingsBlockNetworkInternetPage;

    /**
     * The Settings Block Personalization Page.
     * Indicates whether or not to block access to Personalization in Settings app.
     */
    @SerializedName(value = "settingsBlockPersonalizationPage", alternate = {"SettingsBlockPersonalizationPage"})
    @Expose
	@Nullable
    public Boolean settingsBlockPersonalizationPage;

    /**
     * The Settings Block Privacy Page.
     * Indicates whether or not to block access to Privacy in Settings app.
     */
    @SerializedName(value = "settingsBlockPrivacyPage", alternate = {"SettingsBlockPrivacyPage"})
    @Expose
	@Nullable
    public Boolean settingsBlockPrivacyPage;

    /**
     * The Settings Block Remove Provisioning Package.
     * Indicates whether or not to block the runtime configuration agent from removing provisioning packages.
     */
    @SerializedName(value = "settingsBlockRemoveProvisioningPackage", alternate = {"SettingsBlockRemoveProvisioningPackage"})
    @Expose
	@Nullable
    public Boolean settingsBlockRemoveProvisioningPackage;

    /**
     * The Settings Block Settings App.
     * Indicates whether or not to block access to Settings app.
     */
    @SerializedName(value = "settingsBlockSettingsApp", alternate = {"SettingsBlockSettingsApp"})
    @Expose
	@Nullable
    public Boolean settingsBlockSettingsApp;

    /**
     * The Settings Block System Page.
     * Indicates whether or not to block access to System in Settings app.
     */
    @SerializedName(value = "settingsBlockSystemPage", alternate = {"SettingsBlockSystemPage"})
    @Expose
	@Nullable
    public Boolean settingsBlockSystemPage;

    /**
     * The Settings Block Time Language Page.
     * Indicates whether or not to block access to Time &amp; Language in Settings app.
     */
    @SerializedName(value = "settingsBlockTimeLanguagePage", alternate = {"SettingsBlockTimeLanguagePage"})
    @Expose
	@Nullable
    public Boolean settingsBlockTimeLanguagePage;

    /**
     * The Settings Block Update Security Page.
     * Indicates whether or not to block access to Update &amp; Security in Settings app.
     */
    @SerializedName(value = "settingsBlockUpdateSecurityPage", alternate = {"SettingsBlockUpdateSecurityPage"})
    @Expose
	@Nullable
    public Boolean settingsBlockUpdateSecurityPage;

    /**
     * The Shared User App Data Allowed.
     * Indicates whether or not to block multiple users of the same app to share data.
     */
    @SerializedName(value = "sharedUserAppDataAllowed", alternate = {"SharedUserAppDataAllowed"})
    @Expose
	@Nullable
    public Boolean sharedUserAppDataAllowed;

    /**
     * The Smart Screen Block Prompt Override.
     * Indicates whether or not users can override SmartScreen Filter warnings about potentially malicious websites.
     */
    @SerializedName(value = "smartScreenBlockPromptOverride", alternate = {"SmartScreenBlockPromptOverride"})
    @Expose
	@Nullable
    public Boolean smartScreenBlockPromptOverride;

    /**
     * The Smart Screen Block Prompt Override For Files.
     * Indicates whether or not users can override the SmartScreen Filter warnings about downloading unverified files
     */
    @SerializedName(value = "smartScreenBlockPromptOverrideForFiles", alternate = {"SmartScreenBlockPromptOverrideForFiles"})
    @Expose
	@Nullable
    public Boolean smartScreenBlockPromptOverrideForFiles;

    /**
     * The Smart Screen Enable App Install Control.
     * This property will be deprecated in July 2019 and will be replaced by property SmartScreenAppInstallControl. Allows IT Admins to control whether users are allowed to install apps from places other than the Store.
     */
    @SerializedName(value = "smartScreenEnableAppInstallControl", alternate = {"SmartScreenEnableAppInstallControl"})
    @Expose
	@Nullable
    public Boolean smartScreenEnableAppInstallControl;

    /**
     * The Start Block Unpinning Apps From Taskbar.
     * Indicates whether or not to block the user from unpinning apps from taskbar.
     */
    @SerializedName(value = "startBlockUnpinningAppsFromTaskbar", alternate = {"StartBlockUnpinningAppsFromTaskbar"})
    @Expose
	@Nullable
    public Boolean startBlockUnpinningAppsFromTaskbar;

    /**
     * The Start Menu App List Visibility.
     * Setting the value of this collapses the app list, removes the app list entirely, or disables the corresponding toggle in the Settings app. Possible values are: userDefined, collapse, remove, disableSettingsApp.
     */
    @SerializedName(value = "startMenuAppListVisibility", alternate = {"StartMenuAppListVisibility"})
    @Expose
	@Nullable
    public EnumSet<WindowsStartMenuAppListVisibilityType> startMenuAppListVisibility;

    /**
     * The Start Menu Hide Change Account Settings.
     * Enabling this policy hides the change account setting from appearing in the user tile in the start menu.
     */
    @SerializedName(value = "startMenuHideChangeAccountSettings", alternate = {"StartMenuHideChangeAccountSettings"})
    @Expose
	@Nullable
    public Boolean startMenuHideChangeAccountSettings;

    /**
     * The Start Menu Hide Frequently Used Apps.
     * Enabling this policy hides the most used apps from appearing on the start menu and disables the corresponding toggle in the Settings app.
     */
    @SerializedName(value = "startMenuHideFrequentlyUsedApps", alternate = {"StartMenuHideFrequentlyUsedApps"})
    @Expose
	@Nullable
    public Boolean startMenuHideFrequentlyUsedApps;

    /**
     * The Start Menu Hide Hibernate.
     * Enabling this policy hides hibernate from appearing in the power button in the start menu.
     */
    @SerializedName(value = "startMenuHideHibernate", alternate = {"StartMenuHideHibernate"})
    @Expose
	@Nullable
    public Boolean startMenuHideHibernate;

    /**
     * The Start Menu Hide Lock.
     * Enabling this policy hides lock from appearing in the user tile in the start menu.
     */
    @SerializedName(value = "startMenuHideLock", alternate = {"StartMenuHideLock"})
    @Expose
	@Nullable
    public Boolean startMenuHideLock;

    /**
     * The Start Menu Hide Power Button.
     * Enabling this policy hides the power button from appearing in the start menu.
     */
    @SerializedName(value = "startMenuHidePowerButton", alternate = {"StartMenuHidePowerButton"})
    @Expose
	@Nullable
    public Boolean startMenuHidePowerButton;

    /**
     * The Start Menu Hide Recent Jump Lists.
     * Enabling this policy hides recent jump lists from appearing on the start menu/taskbar and disables the corresponding toggle in the Settings app.
     */
    @SerializedName(value = "startMenuHideRecentJumpLists", alternate = {"StartMenuHideRecentJumpLists"})
    @Expose
	@Nullable
    public Boolean startMenuHideRecentJumpLists;

    /**
     * The Start Menu Hide Recently Added Apps.
     * Enabling this policy hides recently added apps from appearing on the start menu and disables the corresponding toggle in the Settings app.
     */
    @SerializedName(value = "startMenuHideRecentlyAddedApps", alternate = {"StartMenuHideRecentlyAddedApps"})
    @Expose
	@Nullable
    public Boolean startMenuHideRecentlyAddedApps;

    /**
     * The Start Menu Hide Restart Options.
     * Enabling this policy hides 'Restart/Update and Restart' from appearing in the power button in the start menu.
     */
    @SerializedName(value = "startMenuHideRestartOptions", alternate = {"StartMenuHideRestartOptions"})
    @Expose
	@Nullable
    public Boolean startMenuHideRestartOptions;

    /**
     * The Start Menu Hide Shut Down.
     * Enabling this policy hides shut down/update and shut down from appearing in the power button in the start menu.
     */
    @SerializedName(value = "startMenuHideShutDown", alternate = {"StartMenuHideShutDown"})
    @Expose
	@Nullable
    public Boolean startMenuHideShutDown;

    /**
     * The Start Menu Hide Sign Out.
     * Enabling this policy hides sign out from appearing in the user tile in the start menu.
     */
    @SerializedName(value = "startMenuHideSignOut", alternate = {"StartMenuHideSignOut"})
    @Expose
	@Nullable
    public Boolean startMenuHideSignOut;

    /**
     * The Start Menu Hide Sleep.
     * Enabling this policy hides sleep from appearing in the power button in the start menu.
     */
    @SerializedName(value = "startMenuHideSleep", alternate = {"StartMenuHideSleep"})
    @Expose
	@Nullable
    public Boolean startMenuHideSleep;

    /**
     * The Start Menu Hide Switch Account.
     * Enabling this policy hides switch account from appearing in the user tile in the start menu.
     */
    @SerializedName(value = "startMenuHideSwitchAccount", alternate = {"StartMenuHideSwitchAccount"})
    @Expose
	@Nullable
    public Boolean startMenuHideSwitchAccount;

    /**
     * The Start Menu Hide User Tile.
     * Enabling this policy hides the user tile from appearing in the start menu.
     */
    @SerializedName(value = "startMenuHideUserTile", alternate = {"StartMenuHideUserTile"})
    @Expose
	@Nullable
    public Boolean startMenuHideUserTile;

    /**
     * The Start Menu Layout Edge Assets Xml.
     * This policy setting allows you to import Edge assets to be used with startMenuLayoutXml policy. Start layout can contain secondary tile from Edge app which looks for Edge local asset file. Edge local asset would not exist and cause Edge secondary tile to appear empty in this case. This policy only gets applied when startMenuLayoutXml policy is modified. The value should be a UTF-8 Base64 encoded byte array.
     */
    @SerializedName(value = "startMenuLayoutEdgeAssetsXml", alternate = {"StartMenuLayoutEdgeAssetsXml"})
    @Expose
	@Nullable
    public byte[] startMenuLayoutEdgeAssetsXml;

    /**
     * The Start Menu Layout Xml.
     * Allows admins to override the default Start menu layout and prevents the user from changing it. The layout is modified by specifying an XML file based on a layout modification schema. XML needs to be in a UTF8 encoded byte array format.
     */
    @SerializedName(value = "startMenuLayoutXml", alternate = {"StartMenuLayoutXml"})
    @Expose
	@Nullable
    public byte[] startMenuLayoutXml;

    /**
     * The Start Menu Mode.
     * Allows admins to decide how the Start menu is displayed. Possible values are: userDefined, fullScreen, nonFullScreen.
     */
    @SerializedName(value = "startMenuMode", alternate = {"StartMenuMode"})
    @Expose
	@Nullable
    public WindowsStartMenuModeType startMenuMode;

    /**
     * The Start Menu Pinned Folder Documents.
     * Enforces the visibility (Show/Hide) of the Documents folder shortcut on the Start menu. Possible values are: notConfigured, hide, show.
     */
    @SerializedName(value = "startMenuPinnedFolderDocuments", alternate = {"StartMenuPinnedFolderDocuments"})
    @Expose
	@Nullable
    public VisibilitySetting startMenuPinnedFolderDocuments;

    /**
     * The Start Menu Pinned Folder Downloads.
     * Enforces the visibility (Show/Hide) of the Downloads folder shortcut on the Start menu. Possible values are: notConfigured, hide, show.
     */
    @SerializedName(value = "startMenuPinnedFolderDownloads", alternate = {"StartMenuPinnedFolderDownloads"})
    @Expose
	@Nullable
    public VisibilitySetting startMenuPinnedFolderDownloads;

    /**
     * The Start Menu Pinned Folder File Explorer.
     * Enforces the visibility (Show/Hide) of the FileExplorer shortcut on the Start menu. Possible values are: notConfigured, hide, show.
     */
    @SerializedName(value = "startMenuPinnedFolderFileExplorer", alternate = {"StartMenuPinnedFolderFileExplorer"})
    @Expose
	@Nullable
    public VisibilitySetting startMenuPinnedFolderFileExplorer;

    /**
     * The Start Menu Pinned Folder Home Group.
     * Enforces the visibility (Show/Hide) of the HomeGroup folder shortcut on the Start menu. Possible values are: notConfigured, hide, show.
     */
    @SerializedName(value = "startMenuPinnedFolderHomeGroup", alternate = {"StartMenuPinnedFolderHomeGroup"})
    @Expose
	@Nullable
    public VisibilitySetting startMenuPinnedFolderHomeGroup;

    /**
     * The Start Menu Pinned Folder Music.
     * Enforces the visibility (Show/Hide) of the Music folder shortcut on the Start menu. Possible values are: notConfigured, hide, show.
     */
    @SerializedName(value = "startMenuPinnedFolderMusic", alternate = {"StartMenuPinnedFolderMusic"})
    @Expose
	@Nullable
    public VisibilitySetting startMenuPinnedFolderMusic;

    /**
     * The Start Menu Pinned Folder Network.
     * Enforces the visibility (Show/Hide) of the Network folder shortcut on the Start menu. Possible values are: notConfigured, hide, show.
     */
    @SerializedName(value = "startMenuPinnedFolderNetwork", alternate = {"StartMenuPinnedFolderNetwork"})
    @Expose
	@Nullable
    public VisibilitySetting startMenuPinnedFolderNetwork;

    /**
     * The Start Menu Pinned Folder Personal Folder.
     * Enforces the visibility (Show/Hide) of the PersonalFolder shortcut on the Start menu. Possible values are: notConfigured, hide, show.
     */
    @SerializedName(value = "startMenuPinnedFolderPersonalFolder", alternate = {"StartMenuPinnedFolderPersonalFolder"})
    @Expose
	@Nullable
    public VisibilitySetting startMenuPinnedFolderPersonalFolder;

    /**
     * The Start Menu Pinned Folder Pictures.
     * Enforces the visibility (Show/Hide) of the Pictures folder shortcut on the Start menu. Possible values are: notConfigured, hide, show.
     */
    @SerializedName(value = "startMenuPinnedFolderPictures", alternate = {"StartMenuPinnedFolderPictures"})
    @Expose
	@Nullable
    public VisibilitySetting startMenuPinnedFolderPictures;

    /**
     * The Start Menu Pinned Folder Settings.
     * Enforces the visibility (Show/Hide) of the Settings folder shortcut on the Start menu. Possible values are: notConfigured, hide, show.
     */
    @SerializedName(value = "startMenuPinnedFolderSettings", alternate = {"StartMenuPinnedFolderSettings"})
    @Expose
	@Nullable
    public VisibilitySetting startMenuPinnedFolderSettings;

    /**
     * The Start Menu Pinned Folder Videos.
     * Enforces the visibility (Show/Hide) of the Videos folder shortcut on the Start menu. Possible values are: notConfigured, hide, show.
     */
    @SerializedName(value = "startMenuPinnedFolderVideos", alternate = {"StartMenuPinnedFolderVideos"})
    @Expose
	@Nullable
    public VisibilitySetting startMenuPinnedFolderVideos;

    /**
     * The Storage Block Removable Storage.
     * Indicates whether or not to Block the user from using removable storage.
     */
    @SerializedName(value = "storageBlockRemovableStorage", alternate = {"StorageBlockRemovableStorage"})
    @Expose
	@Nullable
    public Boolean storageBlockRemovableStorage;

    /**
     * The Storage Require Mobile Device Encryption.
     * Indicating whether or not to require encryption on a mobile device.
     */
    @SerializedName(value = "storageRequireMobileDeviceEncryption", alternate = {"StorageRequireMobileDeviceEncryption"})
    @Expose
	@Nullable
    public Boolean storageRequireMobileDeviceEncryption;

    /**
     * The Storage Restrict App Data To System Volume.
     * Indicates whether application data is restricted to the system drive.
     */
    @SerializedName(value = "storageRestrictAppDataToSystemVolume", alternate = {"StorageRestrictAppDataToSystemVolume"})
    @Expose
	@Nullable
    public Boolean storageRestrictAppDataToSystemVolume;

    /**
     * The Storage Restrict App Install To System Volume.
     * Indicates whether the installation of applications is restricted to the system drive.
     */
    @SerializedName(value = "storageRestrictAppInstallToSystemVolume", alternate = {"StorageRestrictAppInstallToSystemVolume"})
    @Expose
	@Nullable
    public Boolean storageRestrictAppInstallToSystemVolume;

    /**
     * The Tenant Lockdown Require Network During Out Of Box Experience.
     * Whether the device is required to connect to the network.
     */
    @SerializedName(value = "tenantLockdownRequireNetworkDuringOutOfBoxExperience", alternate = {"TenantLockdownRequireNetworkDuringOutOfBoxExperience"})
    @Expose
	@Nullable
    public Boolean tenantLockdownRequireNetworkDuringOutOfBoxExperience;

    /**
     * The Usb Blocked.
     * Indicates whether or not to Block the user from USB connection.
     */
    @SerializedName(value = "usbBlocked", alternate = {"UsbBlocked"})
    @Expose
	@Nullable
    public Boolean usbBlocked;

    /**
     * The Voice Recording Blocked.
     * Indicates whether or not to Block the user from voice recording.
     */
    @SerializedName(value = "voiceRecordingBlocked", alternate = {"VoiceRecordingBlocked"})
    @Expose
	@Nullable
    public Boolean voiceRecordingBlocked;

    /**
     * The Web Rtc Block Localhost Ip Address.
     * Indicates whether or not user's localhost IP address is displayed while making phone calls using the WebRTC
     */
    @SerializedName(value = "webRtcBlockLocalhostIpAddress", alternate = {"WebRtcBlockLocalhostIpAddress"})
    @Expose
	@Nullable
    public Boolean webRtcBlockLocalhostIpAddress;

    /**
     * The Wi Fi Block Automatic Connect Hotspots.
     * Indicating whether or not to block automatically connecting to Wi-Fi hotspots. Has no impact if Wi-Fi is blocked.
     */
    @SerializedName(value = "wiFiBlockAutomaticConnectHotspots", alternate = {"WiFiBlockAutomaticConnectHotspots"})
    @Expose
	@Nullable
    public Boolean wiFiBlockAutomaticConnectHotspots;

    /**
     * The Wi Fi Blocked.
     * Indicates whether or not to Block the user from using Wi-Fi.
     */
    @SerializedName(value = "wiFiBlocked", alternate = {"WiFiBlocked"})
    @Expose
	@Nullable
    public Boolean wiFiBlocked;

    /**
     * The Wi Fi Block Manual Configuration.
     * Indicates whether or not to Block the user from using Wi-Fi manual configuration.
     */
    @SerializedName(value = "wiFiBlockManualConfiguration", alternate = {"WiFiBlockManualConfiguration"})
    @Expose
	@Nullable
    public Boolean wiFiBlockManualConfiguration;

    /**
     * The Wi Fi Scan Interval.
     * Specify how often devices scan for Wi-Fi networks. Supported values are 1-500, where 100 = default, and 500 = low frequency. Valid values 1 to 500
     */
    @SerializedName(value = "wiFiScanInterval", alternate = {"WiFiScanInterval"})
    @Expose
	@Nullable
    public Integer wiFiScanInterval;

    /**
     * The Windows Spotlight Block Consumer Specific Features.
     * Allows IT admins to block experiences that are typically for consumers only, such as Start suggestions, Membership notifications, Post-OOBE app install and redirect tiles.
     */
    @SerializedName(value = "windowsSpotlightBlockConsumerSpecificFeatures", alternate = {"WindowsSpotlightBlockConsumerSpecificFeatures"})
    @Expose
	@Nullable
    public Boolean windowsSpotlightBlockConsumerSpecificFeatures;

    /**
     * The Windows Spotlight Blocked.
     * Allows IT admins to turn off all Windows Spotlight features
     */
    @SerializedName(value = "windowsSpotlightBlocked", alternate = {"WindowsSpotlightBlocked"})
    @Expose
	@Nullable
    public Boolean windowsSpotlightBlocked;

    /**
     * The Windows Spotlight Block On Action Center.
     * Block suggestions from Microsoft that show after each OS clean install, upgrade or in an on-going basis to introduce users to what is new or changed
     */
    @SerializedName(value = "windowsSpotlightBlockOnActionCenter", alternate = {"WindowsSpotlightBlockOnActionCenter"})
    @Expose
	@Nullable
    public Boolean windowsSpotlightBlockOnActionCenter;

    /**
     * The Windows Spotlight Block Tailored Experiences.
     * Block personalized content in Windows spotlight based on user’s device usage.
     */
    @SerializedName(value = "windowsSpotlightBlockTailoredExperiences", alternate = {"WindowsSpotlightBlockTailoredExperiences"})
    @Expose
	@Nullable
    public Boolean windowsSpotlightBlockTailoredExperiences;

    /**
     * The Windows Spotlight Block Third Party Notifications.
     * Block third party content delivered via Windows Spotlight
     */
    @SerializedName(value = "windowsSpotlightBlockThirdPartyNotifications", alternate = {"WindowsSpotlightBlockThirdPartyNotifications"})
    @Expose
	@Nullable
    public Boolean windowsSpotlightBlockThirdPartyNotifications;

    /**
     * The Windows Spotlight Block Welcome Experience.
     * Block Windows Spotlight Windows welcome experience
     */
    @SerializedName(value = "windowsSpotlightBlockWelcomeExperience", alternate = {"WindowsSpotlightBlockWelcomeExperience"})
    @Expose
	@Nullable
    public Boolean windowsSpotlightBlockWelcomeExperience;

    /**
     * The Windows Spotlight Block Windows Tips.
     * Allows IT admins to turn off the popup of Windows Tips.
     */
    @SerializedName(value = "windowsSpotlightBlockWindowsTips", alternate = {"WindowsSpotlightBlockWindowsTips"})
    @Expose
	@Nullable
    public Boolean windowsSpotlightBlockWindowsTips;

    /**
     * The Windows Spotlight Configure On Lock Screen.
     * Specifies the type of Spotlight. Possible values are: notConfigured, disabled, enabled.
     */
    @SerializedName(value = "windowsSpotlightConfigureOnLockScreen", alternate = {"WindowsSpotlightConfigureOnLockScreen"})
    @Expose
	@Nullable
    public WindowsSpotlightEnablementSettings windowsSpotlightConfigureOnLockScreen;

    /**
     * The Windows Store Block Auto Update.
     * Indicates whether or not to block automatic update of apps from Windows Store.
     */
    @SerializedName(value = "windowsStoreBlockAutoUpdate", alternate = {"WindowsStoreBlockAutoUpdate"})
    @Expose
	@Nullable
    public Boolean windowsStoreBlockAutoUpdate;

    /**
     * The Windows Store Blocked.
     * Indicates whether or not to Block the user from using the Windows store.
     */
    @SerializedName(value = "windowsStoreBlocked", alternate = {"WindowsStoreBlocked"})
    @Expose
	@Nullable
    public Boolean windowsStoreBlocked;

    /**
     * The Windows Store Enable Private Store Only.
     * Indicates whether or not to enable Private Store Only.
     */
    @SerializedName(value = "windowsStoreEnablePrivateStoreOnly", alternate = {"WindowsStoreEnablePrivateStoreOnly"})
    @Expose
	@Nullable
    public Boolean windowsStoreEnablePrivateStoreOnly;

    /**
     * The Wireless Display Block Projection To This Device.
     * Indicates whether or not to allow other devices from discovering this PC for projection.
     */
    @SerializedName(value = "wirelessDisplayBlockProjectionToThisDevice", alternate = {"WirelessDisplayBlockProjectionToThisDevice"})
    @Expose
	@Nullable
    public Boolean wirelessDisplayBlockProjectionToThisDevice;

    /**
     * The Wireless Display Block User Input From Receiver.
     * Indicates whether or not to allow user input from wireless display receiver.
     */
    @SerializedName(value = "wirelessDisplayBlockUserInputFromReceiver", alternate = {"WirelessDisplayBlockUserInputFromReceiver"})
    @Expose
	@Nullable
    public Boolean wirelessDisplayBlockUserInputFromReceiver;

    /**
     * The Wireless Display Require Pin For Pairing.
     * Indicates whether or not to require a PIN for new devices to initiate pairing.
     */
    @SerializedName(value = "wirelessDisplayRequirePinForPairing", alternate = {"WirelessDisplayRequirePinForPairing"})
    @Expose
	@Nullable
    public Boolean wirelessDisplayRequirePinForPairing;


    /**
     * Sets the raw JSON object
     *
     * @param serializer the serializer
     * @param json the JSON object to set this object to
     */
    public void setRawObject(@Nonnull final ISerializer serializer, @Nonnull final JsonObject json) {

    }
}
